In a browser-based web environment, due to the same-origin policy restriction that the web-browser places on server calls accessing data across domains poses a challenge. The same-origin policy prevents a web-browser from fetching information from a web-domain that is different from the domain specified in the URL of the web browser. This provides a restrictive constraint for applications that must synthesize data from multiple sources that are not located on the same domain. Solutions to this problem included pre-building an aggregated data-warehouse on a single domain and having an application, such as a web application, communicate only with the data warehouse. This solution requires that all information domains are known at design time for the application for creating a visualization of the data, and prevents dynamic user-based configurations at run-time. This solution does not work with data-sources that are computed at query time, like the results of simulations or algorithms.
Another solution to the accessing data in a multiple domains includes using same-origin policy headers to tell the browser to make specific exceptions to the same-origin policy. This solution requires coordination between both the sources and consumers of data, and static configuration on both sides, thus preventing the easy dynamic inclusion of new domains.
Another solution includes the use of JSON-with-padding (JSONP) calls to accomplish cross-domain communication. This leverages the interpreted nature of client-side Javascript to disguise cross-domain data as anonymous (lambda) functions whose execution results in the desired data being loaded into memory. This is an exploit of security vulnerability in the web-browser, and not a safe or long-term option to cross-domain calling.
A final solution is the use of inline-frame HTML element (iframe) embedded within web-pages to make cross-domain information accessible. This approach can make cross-domain information accessible from the perspective of the user, but cannot make it accessible to the underlying shared program memory where it can be synthesized with other data.
Thus, each of the prior art solutions fail to provide a robust mechanism for accessing data between domains and providing a means for synthesizing the data for graphical display.